<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <title>电子科大网络安全云平台</title>
  <link rel="stylesheet" href="layui/css/layui.css">
</head>
<body>
<div class="layui-layout layui-layout-admin">
  <div class="layui-header">
    <div class="layui-logo layui-hide-xs layui-bg-black">电子科大网络安全云平台</div>
    <!-- 头部区域（可配合layui 已有的水平导航） -->
    <ul class="layui-nav layui-layout-left">
      <!-- 移动端显示 -->
      <li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft">
        <i class="layui-icon layui-icon-spread-left"></i>
      </li>

      <li class="layui-nav-item layui-hide-xs"><a href="">分支系统</a></li>
      <li class="layui-nav-item layui-hide-xs"><a href="">追溯系统</a></li>
      <li class="layui-nav-item layui-hide-xs"><a href="">备份系统</a></li>
      <li class="layui-nav-item">
        <a href="javascript:;">日志系统</a>
        <dl class="layui-nav-child">
          <dd><a href="">日志服务01</a></dd>
          <dd><a href="">日志服务02</a></dd>
          <dd><a href="">日志服务03</a></dd>
        </dl>
      </li>
    </ul>
    <ul class="layui-nav layui-layout-right">
      <li class="layui-nav-item layui-hide layui-show-md-inline-block">
        <a href="javascript:;">
          <img src="//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg" class="layui-nav-img">
          <span id="show_username">&nbsp;&nbsp;&nbsp;&nbsp;</span>
        </a>
        <dl class="layui-nav-child">
          <dd><a href="common_information.html">基础信息</a></dd>
          <dd><a href="">退出</a></dd>
        </dl>
      </li>
    </ul>
  </div>

  <div class="layui-side layui-bg-black">
    <div class="layui-side-scroll">
      <!-- 左侧导航区域（可配合layui已有的垂直导航） -->
      <ul class="layui-nav layui-nav-tree" lay-filter="test">
        <li class="layui-nav-item layui-nav-itemed">
          <a class="" href="common_information.html">基础数据管理</a>
          <dl class="layui-nav-child">
            <dd><a href="department.html">部门管理</a></dd>
            <dd><a href="role.html">权限管理</a></dd>
            <dd><a href="user.html">用户管理</a></dd>
          </dl>
        </li>
        <li class="layui-nav-item layui-nav-itemed">
          <a href="javascript:;">漏洞扫描管理</a>
          <dl class="layui-nav-child">
            <dd class="layui-this"><a href="module.html">扫描结果</a></dd>
            <dd><a href="javascript:;">风险等级</a></dd>
            <dd><a href="javascript:;">安全漏洞</a></dd>
          </dl>
        </li>
        <li class="layui-nav-item layui-nav-itemed">
          <a href="javascript:;">基线任务管理</a>
          <dl class="layui-nav-child">
            <dd><a href="javascript:;">客户机管理</a></dd>
            <dd><a href="javascript:;">基线管理</a></dd>
            <dd><a href="javascript:;">客户机基线</a></dd>
          </dl>
        </li>
      </ul>
    </div>
  </div>
  <div class="layui-body">
    <!-- 内容主体区域 -->
    <div style="padding: 15px;">

      <!-- 内容主体区域  面包屑-->
      <span class="layui-breadcrumb">
              <a href="index.html">首页</a>
              <a><cite>漏洞扫描管理</cite></a>
              <a><cite>扫描结果</cite></a>
            </span>

      <!-- 水平线 -->
      <hr class="layui-bg-blue">

      <!-- 搜索条件 -->
      <fieldset class="layui-elem-field">
        <legend>筛选条件</legend>
        <div class="layui-field-box">
          <div class="layui-form-item layui-form-pane">
            <label class="layui-form-label">组件名称</label>
            <div class="layui-input-inline">
              <input type="text" id="search_moduleName" placeholder="请输入组件名称" class="layui-input">
            </div>

            <label class="layui-form-label">组件版本</label>
            <div class="layui-input-inline">
              <input type="text" id="search_moduleVersion" placeholder="请输入组件版本" class="layui-input">
            </div>
          </div>
        </div>

        <div class="layui-form-item layui-form-pane">
          <label class="layui-form-label">风险等级</label>
          <div class="layui-input-inline">
            <input type="text" id="search_dangerlevel" placeholder="请输入风险等级" class="layui-input">
          </div>
          <div>

            <div class="layui-form-item layui-form-pane">
              <div class="layui-inline">
                <button class="layui-btn layui-btn-radius layui-btn-warm" id="iReset">重置</button>
                <button class="layui-btn layui-btn-radius layui-btn-normal" id="searchVal">搜索</button>
              </div>
            </div>
          </div>
        </div>
      </fieldset>

      <table class="layui-hide" id="test" lay-filter="test"></table>
    </div>
  </div>

  <div class="layui-footer">
    <!-- 底部固定区域 -->
    copyright©电子科技大学  www.uestc.edu.cn
  </div>
</div>
<script src="./layui/layui.js"></script>
<script type="text/html" id="toolbarDemo">
  <div class="layui-btn-container">
    <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
    <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button>
    <button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button>
    <button class="layui-btn layui-btn-sm" lay-event="insertData">新增组件</button>
  </div>
</script>

<script type="text/html" id="barDemo">
  <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
  <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
//新增操作弹窗
<script type="text/html" id="insert_form">
  <div class="layui-field-box">
    <div class="layui-form-item layui-form-pane">
      <label class="layui-form-label">组件名</label>
      <div class="layui-input-inline">
        <input type="text" id="insert_modulename" class="layui-input" placeholder="请输入组件名">
      </div>
    </div>

    <div class="layui-form-item layui-form-pane">
      <label class="layui-form-label">组件版本</label>
      <div class="layui-input-inline">
        <input type="text" id="insert_moduleversion" class="layui-input" placeholder="请输入组件版本">
      </div>
    </div>

    <div class="layui-form-item layui-form-pane">
      <label class="layui-form-label">风险等级</label>
      <div class="layui-input-inline">
        <div class="layui-input-block" style="margin-left: 0">
          <form class="layui-form" action="">
            <select id="insert_select_dangerlevel">
              <option value="" selected=""></option>
            </select>
          </form>
        </div>
      </div>
    </div>
  </div>
</script>
// 更新界面
<script type="text/html" id="update_form">
  <div class="layui-field-box">
    <div class="layui-form-item layui-form-pane">
      <label class="layui-form-label">组件版本</label>
      <div class="layui-input-inline">
        <input type="text" id="update_select_moduleversion" class="layui-input" placeholder="请输入组件版本">
      </div>
    </div>

    <div class="layui-form-item layui-form-pane">
      <label class="layui-form-label">风险等级</label>
      <div class="layui-input-inline">
        <div class="layui-input-block" style="margin-left: 0">
          <form class="layui-form" action="">
            <select id="update_select_dangerlevel">
              <option value="" selected=""></option>
            </select>
          </form>
        </div>
      </div>
    </div>


  </div>
</script>


<script src="layui/layui.js" charset="utf-8"></script>
<script src="jquery/jquery-3.6.0.js" charset="utf-8"></script>
<!-- 注意：如果你直接复制所有代码到本地，上述 JS 路径需要改成你本地的 -->

<script>

  let dangerlevelArray = [];

  $.ajax({
    url:"/dangerlevel/selectAlldangerlevel",           // 请求路径
    type:"get",                  // 请求的方式，不区分大小写
    cache:false,                  // 关闭缓存，目的是为了避免部分浏览器缓存加载出错(IE)
    datatype:"json",        // 返回类型，text文本、html页面、json数据
    success:function(response){
      console.log("返回: " + JSON.stringify(response));
      if(response.code === 0) {
        dangerlevelArray = response.data;
      }
    },
    error:function(response){
      console.log("出错返回: " + response);
    }
  });

  //查询，重置操作
  $("#searchVal").click(function () {
    let search_moduleName = $("#search_moduleName").val();
    let search_moduleVersion = $("#search_moduleVersion").val();
    let search_dangerlevel = $("#search_dangerlevel").val();
    flushTable(search_moduleName,search_moduleVersion, search_dangerlevel);
  });

  $("#iReset").click(function () {
    $("#search_moduleName").val("");
    $("#search_moduleVersion").val("");
    $("#search_dangerlevel").val("");
    flushTable();
  });

  function flushTable(search_moduleName,search_moduleVersion, search_dangerlevel) {
    let searchJSON = {};

    if(search_moduleName != null && search_moduleName !== '') {
      searchJSON.moduleName = search_moduleName;
    }

    if(search_moduleVersion != null && search_moduleVersion !== '') {
      searchJSON.moduleVersion = search_moduleVersion;
    }

    if(search_dangerlevel != null && search_dangerlevel !== '') {
      searchJSON.dangerlevel = search_dangerlevel;
    }

    console.log("searchJSON=" + JSON.stringify(searchJSON));

    layui.use('table', function(){
      var table = layui.table;

      table.render({
        elem: '#test'
        ,url:'/module/selectModules'/*tpa=http://www.layui.com/test/table/demo1.json*/
        ,where: searchJSON       // layui传递搜索条件
        ,toolbar: '#toolbarDemo' //开启头部工具栏，并为其绑定左侧模板
        ,defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义，去除该参数即可
          title: '提示'
          ,layEvent: 'LAYTABLE_TIPS'
          ,icon: 'layui-icon-tips'
        }]
        ,title: '扫描结果表'    // 用户无法看到此名字
        ,cols: [[
          {type: 'checkbox', fixed: 'left'}
          ,{field:'moduleName', title:'组件名/位置', width:250, fixed: 'left', unresize: true, sort: true, templet: function(res){
              return '<em>'+ res.moduleName +'</em>'
            }}
          ,{field:'moduleVersion', title:'组件版本', width:120, templet: function(res){
              return '<em>'+ res.moduleVersion +'</em>'
            }}
          ,{field:'moduleSuggestVersion', title:'推荐修复版本', width:120, templet: function(res){
              return '<em>'+ res.moduleSuggestVersion !== "null" ? res.moduleSuggestVersion : "" +'</em>'
            }}
          ,{field:'dangerLevel', title:'风险等级', width:120, templet: function(res){
              return '<em>'+ res.dangerLevel.dangerlevel +'</em>'
            }}
          ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}
        ]]
        ,page: true
      });

      //头工具栏事件
      table.on('toolbar(test)', function(obj){
        var checkStatus = table.checkStatus(obj.config.id);
        switch(obj.event){
          case 'getCheckData':
            var data = checkStatus.data;
            layer.alert(JSON.stringify(data));
            break;
          case 'getCheckLength':
            var data = checkStatus.data;
            layer.msg('选中了：'+ data.length + ' 个');
            break;
          case 'isAll':
            layer.msg(checkStatus.isAll ? '全选': '未全选');
            break;
          case 'insertData':
            layer.open({     // 弹出框处理  模态框
              type: 1               // 模态框
              ,title: '新增组件' //不显示标题栏
              ,closeBtn: false
              ,area: ['500px','500px']  // 宽和高
              ,shade: 0.5
              ,id: 'LAY_layuipro' //设定一个id，防止重复弹出
              ,btn: ['新增', '取消']
              ,btnAlign: 'c'
              ,moveType: 1 //拖拽模式，0或者1
              ,content: $('#insert_form').html()         // 引入自定义表单
              ,btn1: function(index, layero){            // 这个是新增按钮点击事件
                // layer.msg("新增按钮执行");
                let moduleName = $("#insert_modulename").val();
                let moduleVersion = $("#insert_moduleversion").val();
                let dangerlevelId = $("#insert_select_dangerlevel").val();
                $.ajax({
                  url:"/module/insert",           // 请求路径
                  type:"post",                  // 请求的方式，不区分大小写
                  cache:false,                  // 关闭缓存，目的是为了避免部分浏览器缓存加载出错(IE)
                  contentType:"application/json;charset=utf-8",
                  data: JSON.stringify({
                    moduleName:moduleName,
                    moduleVersion:moduleVersion,
                    dangerlevelId:dangerlevelId,
                  }),
                  datatype:"json",        // 返回类型，text文本、html页面、json数据
                  success:function(response){
                    console.log("返回: " + JSON.stringify(response));
                    if(response.code === 200) {
                      layer.msg("新增组件成功!");
                      layer.close(index);                         // 关闭当前窗口
                      flushTable();                               // 重新渲染数据库最新的数据结果
                    }
                  },
                  error:function(response){
                    console.log("出错返回: " + response);
                  }
                });
              }
              ,success: function(layero){
                console.log(dangerlevelArray);
                console.log(dangerlevelArray.length);
                for(i = 0; i < dangerlevelArray.length; i++) {
                  let dangerlevelOnly = dangerlevelArray[i];
                  $("#insert_select_dangerlevel").append('<option value="' + dangerlevelOnly.id + '">' + dangerlevelOnly.dangerlevel + '</option>');
                }

                layui.use('form', function(){
                  var form = layui.form;
                  form.render('select'); //刷新select选择框渲染
                });
              }
            });
            break;

                //自定义头工具栏右侧图标 - 提示
          case 'LAYTABLE_TIPS':
            layer.alert('这是工具栏右侧自定义的一个图标按钮');
            break;
        };
      });

      //监听行工具事件
      table.on('tool(test)', function(obj){
        var data = obj.data;
        console.log(JSON.stringify(obj));
        if(obj.event === 'del'){
          layer.confirm('真的删除行么', function(index){
            // obj.del();                     // 虚拟删除
            $.ajax({
              url:"/module/delete",           // 请求路径
              type:"post",                  // 请求的方式，不区分大小写
              cache:false,                  // 关闭缓存，目的是为了避免部分浏览器缓存加载出错(IE)
              data: {
                id:data.id
              },
              datatype:"json",        // 返回类型，text文本、html页面、json数据
              success:function(response){
                console.log("返回: " + JSON.stringify(response));
                if(response.code === 200) {
                  layer.msg("删除成功!");
                  layer.close(index);                         // 关闭当前窗口
                  flushTable();                               // 重新渲染数据库最新的数据结果
                }
              },
              error:function(response){
                console.log("出错返回: " + response);
              }
            });
          });
        } else if(obj.event === 'edit'){  //更新操作
          layer.open({     // 弹出框处理  模态框
            type: 1               // 模态框
            ,title: '更新组件' //不显示标题栏
            ,closeBtn: false
            ,area: ['500px','500px']  // 宽和高
            ,shade: 0.5
            ,id: 'LAY_layuipro' //设定一个id，防止重复弹出
            ,btn: ['更新', '取消']
            ,btnAlign: 'c'
            ,moveType: 1 //拖拽模式，0或者1
            ,content: $('#update_form').html()         // 引入自定义表单
            ,btn1: function(index, layero){
              // 这个是按钮点击事件
              let moduleVersion = $("#update_select_moduleversion").val();
              let dangerlevelId = $("#update_select_dangerlevel").val();
              if(moduleVersion == null || moduleVersion === '') {
                layer.msg('请输入组件版本');
                return;       // 终止后续的代码执行，任何语言都拥有此功能
              }
              if(dangerlevelId == null || dangerlevelId === '') {
                layer.msg('请选择风险等级');
                return;       // 终止后续的代码执行，任何语言都拥有此功能
              }
              $.ajax({
                url:"/module/update",           // 请求路径
                type:"post",                  // 请求的方式，不区分大小写
                cache:false,                  // 关闭缓存，目的是为了避免部分浏览器缓存加载出错(IE)
                contentType:"application/json;charset=utf-8",
                data: JSON.stringify({
                  id:data.id,
                  moduleVersion:moduleVersion,
                  dangerlevelId:dangerlevelId
                }),
                datatype:"json",        // 返回类型，text文本、html页面、json数据

                success:function(response){
                  console.log("返回: " + JSON.stringify(response));
                  if(response.code === 200) {
                    layer.msg("更新组件成功!");
                    layer.close(index);                         // 关闭当前窗口
                    flushTable();                               // 重新渲染数据库最新的数据结果
                  }
                },
                error:function(response){
                  console.log("出错返回: " + response);
                }
              });
            }
            ,success: function(layero){
              $("#update_select_moduleversion").val(data.moduleVersion);
              $("#update_select_dangerlevel").val(data.dangerlevelId);// 在用户未看到弹出框之前的时候，初始化的数据内容放置在这里
              console.log(dangerlevelArray);
              console.log(dangerlevelArray.length);
              for(i = 0; i < dangerlevelArray.length; i++) {
                let dangerlevelOnly = dangerlevelArray[i];
                $("#update_select_dangerlevel").append('<option value="' + dangerlevelOnly.id + '">' + dangerlevelOnly.dangerlevel + '</option>');
              }

              layui.use('form', function(){
                var form = layui.form;
                form.render('select'); //刷新select选择框渲染
              });
            }
          });
        }
      });
    });
  }

  flushTable();   // 默认页面加载的时候，自动调用一次
</script>
</body>
</html>